home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / airnav.arc / AIRNAV.BAS next >
Encoding:
BASIC Source File  |  1986-07-02  |  14.2 KB  |  460 lines

  1. 100 REM ********** AIRNAV-B.BAS *************************
  2. 110 REM
  3. 120 REM *** For Access-Matrix ******
  4. 130 REM       Revised 4/27/85
  5. 140 REM
  6. 150 REM   For use with sequential data files
  7. 152 REM
  8. 154 REM
  9. 160 REM   By Pat Roe, P. O. box 138, Lopez, Washington 98261
  10. 165 REM   Phone 206/468-2220 (Evenings)  206/468-3366 (days)
  11. 170 REM    
  12. 175 DIM P$(20)
  13. 190 CLS
  14. 200 CLOSE
  15. 220 PRINT "Do you want to:"
  16. 230 PRINT
  17. 240 PRINT "      1.  Calculate a Flight?            3. Edit waypoint list"
  18. 250 PRINT "      2.  Calculate intermediate points  4. Enter new file"
  19. 260 PRINT TAB(36); "      5. End program"
  20. 270 L = VAL(INPUT$(1))
  21. 280 ON L GOTO 290,290, 700, 560, 5620
  22. 290 CLS:GOSUB 410
  23. 300 IF L = 1 GOTO 1500 ELSE GOTO 600
  24. 400 REM ***************** LOAD FILE ******************************
  25. 410 REM
  26. 420 PRINT SPC(10): PRINT "What waypoint file"
  27. 425 INPUT "         (Enter 'SAME' to use existing file";FIL$
  28. 430 IF FIL$ = "SAME" THEN RETURN
  29. 440 CLOSE
  30. 450  OPEN "I",#1, FIL$
  31. 460 DIM W$(800)
  32. 470 NF = 1
  33. 480 INPUT #1,N$
  34. 485 GOTO 500
  35. 490 IF LEFT$(N$,3)<"AAA" THEN GOTO 540
  36. 500 W$(NF) = N$
  37. 510 IF EOF(1) THEN GOTO 540
  38. 520 NF = NF+1
  39. 530 GOTO 480
  40. 540 CLOSE #1
  41. 550 RETURN
  42. 560 CLS
  43. 570 CLOSE
  44. 580 GOSUB 410
  45. 590 GOTO 200
  46. 600 K = 1
  47. 610 GOTO 1500
  48. 700 REM ************** EDIT LIST **************************
  49. 710 REM
  50. 720 CLOSE
  51. 730 CLS
  52. 740 GOSUB 410
  53. 750 CLS
  54. 760 PRINT"        Do you want to:"
  55. 770 PRINT"        1. Read list              2. Enter new points"
  56. 780 PRINT"        3. Get Waypoint No.---    4. Get Waypoint XXXXXX "
  57. 790 PRINT"        5. Return to start        6. Return to flight calc"
  58. 800 R=VAL(INPUT$(1))
  59. 810 CLS
  60. 820 ON R GOTO 970, 830, 840,1380,200, 845
  61. 830 GOSUB 850:GOTO  750   
  62. 840 GOSUB 1100: GOTO 750
  63. 845 IF RL = 1 THEN GOTO 2476
  64. 846 IF RL = 2 THEN GOTO 1680
  65. 847 GOTO 5150
  66. 850 REM *********** Waypoint Entry ***************
  67. 860 CLS
  68. 870 PRINT SPC(5);"ENTER IN THIS FORM:"
  69. 880 GOSUB 1160
  70. 890 PRINT
  71. 900 PRINT SPC(4): INPUT W$(NF)
  72. 910 PRINT "      1.  OKAY?     2. RE-ENTER"
  73. 920 IF VAL(INPUT$(1)) = 2 THEN GOTO 870
  74. 930 NF = NF+1
  75. 940 PRINT "      1.  ENTER ADDITIONAL POINTS   2.  RETURN TO START"
  76. 950 IF VAL(INPUT$(1)) = 1 THEN GOTO 870 
  77. 960 RETURN
  78. 970 REM *****  Read Waypoint List ******
  79. 980 CLS
  80. 990 NL = 1
  81. 1000 IF NL<1 THEN NL = 1
  82. 1005 FOR PT% = NL TO NL+19
  83. 1010 IF PT%>NF THEN GOTO 1080
  84. 1020 PRINT PT%; TAB(8); W$(PT%)
  85. 1030 NEXT PT%
  86. 1040 PRINT:PRINT "  1. NEXT GROUP?  2. PREVIOUS GROUP    3. EXIT?"
  87. 1050 R = VAL(INPUT$(1))
  88. 1060 ON R GOTO 1070, 1075, 750
  89. 1070 CLS:NL=NL+20:GOTO 1000
  90. 1075 CLS:NL=NL-20:GOTO 1000
  91. 1080 PRINT " 1.  Read Again        2. Exit"
  92. 1090 IF VAL(INPUT$(1)) = 1 GOTO 980 ELSE GOTO 750
  93. 1100 REM ************** Get Waypoint No. ? ****************************
  94. 1110 CLS 190
  95. 1120 PRINT SPC(10); "What waypoint number do you want "
  96. 1130 PRINT SPC(10); "( FOR 1 TO 9 ENTER AS '01', '05', ETC.)"
  97. 1140 W% = VAL(INPUT$(2))
  98. 1150 GOSUB 1160:GOTO 1200
  99. 1160 PRINT TAB(7);"SAMPLE FORMAT FOR WAYPOINT ENTRY"
  100. 1170 PRINT TAB(7);"LOPEZISL S31- 048-29.2 0122-56.3 -21 WA"
  101. 1180 PRINT TAB(7);"________ ____ ________ _________ ___ __"
  102. 1190 PRINT: RETURN
  103. 1200 PRINT W%;TAB(7);W$(W%)
  104. 1210 PRINT "  1.  EDIT  2. NEXT NUMBER  3. NEW NUMBER   4. DONE"
  105. 1220 R = VAL(INPUT$(1))
  106. 1230 ON R GOTO 1270, 1240, 1110, 750
  107. 1240 W% = W% + 1
  108. 1250 CLS
  109. 1260 GOTO 1150
  110. 1270 CLS
  111. 1280 PRINT SPC(4); "RE-ENTER IN THIS FORMAT"
  112. 1290 GOSUB 1170
  113. 1300 PRINT W%, TAB(7);W$(W%)
  114. 1310 PRINT
  115. 1320 PRINT SPC(4):INPUT W$(W%)
  116. 1330 PRINT "    1. OKAY NOW?   2. TRY AGAIN"
  117. 1340 L = VAL(INPUT$(1))
  118. 1350 IF L = 1 THEN GOTO 1360 ELSE GOTO 1280
  119. 1360 CLS
  120. 1370 RETURN
  121. 1380 REM ***** GET WAYPOINT XXX *********
  122. 1390 CLS
  123. 1400 PRINT "     TYPE WAYPOINT XXXXXXXX (up to eight letters)"
  124. 1410 P$(T) = INPUT$(8)
  125. 1420 PRINT P$(T)
  126. 1430 GOSUB 5020
  127. 1440 W% = P
  128. 1450 W$(W%) = W$(P)
  129. 1460 GOSUB 1160
  130. 1470 GOSUB 1200
  131. 1480 GOTO 750
  132. 1500 REM ************ FLIGHT CALC. ***************************
  133. 1510 REM
  134. 1520 DT = 0: M = 0
  135. 1530 IF FIL$ = "SAME" THEN N = 0: LL = 0: GOTO 1570
  136. 1540 LPRINT CHR$(27);"C";CHR$(66);
  137. 1545 GOTO 1560
  138. 1550 LPRINT CHR$(27);"N";CHR$(9)   
  139. 1560 DIM DM(100)
  140. 1570 CLS
  141. 1655 IF K = 1 THEN GOTO 1750
  142. 1660 REM ***** WAYPOINT INPUT **************
  143. 1661 N = 1
  144. 1665 PRINT TAB(10); "Enter starting point!"
  145. 1670 PRINT SPC(10): INPUT P$(N)
  146. 1675 IF LEN(P$(N))>8 THEN P$(N) = LEFT$(P$(N),8)
  147. 1680 CLS
  148. 1685 FOR D = 1 TO N
  149. 1690 PRINT TAB(10);D;TAB(15);P$(D)
  150. 1695 NEXT D
  151. 1700 N = N + 1
  152. 1705 PRINT
  153. 1710 PRINT TAB(10); "Enter next waypoint"
  154. 1715 PRINT TAB(5);"( Enter 'LIST' to look at waypoint list )"
  155. 1716 PRINT TAB(5);"( Enter 'DONE' if finished with entries)"
  156. 1717 PRINT TAB(5);"( Enter 'START' to return to start)"
  157. 1720 PRINT SPC(10): INPUT P$(N)
  158. 1725 IF LEN(P$(N))>8 THEN P$(N) = LEFT$(P$(N),8)
  159. 1730 IF P$(N) = "DONE" THEN N = N-1:GOTO 1840
  160. 1735 IF P$(N) = "LIST" THEN N = N-1: RL = 2: GOTO 750
  161. 1736 IF P$(N) = "START" THEN GOSUB 190:GOTO 1660
  162. 1740 GOTO 1680
  163. 1750 REM ****** GREAT CIRCLE INPUT ***********
  164. 1755 PRINT TAB(10); "Enter starting point!"
  165. 1760 PRINT SPC(10): INPUT P$(1)
  166. 1765 IF LEN(P$(1))>8 THEN P$(1) = LEFT$(P$(1),8)
  167. 1770 PRINT
  168. 1775 PRINT TAB(10); "Enter Destination"
  169. 1780 PRINT SPC(10): INPUT P$(2)
  170. 1785 IF LEN(P$(2))>8 THEN P$(2) = LEFT$(P$(2),8)
  171. 1790 PRINT
  172. 1795 PRINT SPC(10): INPUT "Leg Distance";X
  173. 1800 LD = X/(57.2958*60)
  174. 1805 L = 1
  175. 1810 GOTO 1860
  176. 1840 PRINT:INPUT "          Enter estimated ground speed:   ";GS
  177. 1850 FOR L=1 TO N-1
  178. 1860 T=L
  179. 1870 GOSUB 5020
  180. 1880 W1$ = W$(P)
  181. 1890 L1$ = MID$(W1$,15,8)
  182. 1900 T1$ = MID$(W1$,24,9)
  183. 1910 V1$ = MID$(W1$,34,3)
  184. 1920 T = L+1
  185. 1930 GOSUB 5020
  186. 1940 W2$ = W$(P)
  187. 1950 L2$ = MID$(W2$,15,8)
  188. 1960 T2$ = MID$(W2$,24,9)
  189. 1970 V2$ = MID$(W2$,34,3)
  190. 1980 Z$ = L1$
  191. 1990 GOSUB 5170
  192. 2000 L1 = W
  193. 2010 Z$ = L2$
  194. 2020 GOSUB 5170
  195. 2030 L2 = W
  196. 2040 Z$ = T1$
  197. 2050 GOSUB 5200
  198. 2060 T1 = W
  199. 2070 Z$ = T2$
  200. 2080 GOSUB 5200
  201. 2090 T2 = W
  202. 2100 X = (SIN(L1)*SIN(L2)) +(COS(L1)*COS(L2)*COS(T2-T1))
  203. 2110 GOSUB 5390
  204. 2120 D=Y
  205. 2130 DM(L)=D*3437.75
  206. 2140 X = ((SIN(L2))-((SIN(L1))*COS(D)))/(SIN(D)*COS(L1))
  207. 2150 GOSUB 5390
  208. 2160 C=Y
  209. 2170 T=C
  210. 2180 GOSUB 5460 
  211. 2190 C=T
  212. 2200 CT = CINT(C*57.2958)
  213. 2210 IF N<2 THEN DT = 0
  214. 2220 DT=DM(L) + DT
  215. 2230 IF K=1 THEN GOTO 3000
  216. 2250 A$ = STR$(FIX(DT/GS))
  217. 2260 B$ = STR$(CINT(60*((DT/GS)-FIX(DT/GS))))
  218. 2262 B$ = RIGHT$(B$,2)
  219. 2265 IF VAL(B$)<10 THEN B$ = "0" + RIGHT$(B$,1)
  220. 2270 TM=CINT(60*DM(L)/GS)
  221. 2275 REM ***************** PRINT OUTPUT ***************************
  222. 2280 IF L=1 THEN GOSUB 5550
  223. 2290 IF L>1 THEN GOTO 2360
  224. 2300 M = M+1
  225. 2310 LPRINT "     ";P$(M)
  226. 2320 M = M+1
  227. 2330 LPRINT CHR$(15);"        ";L1$
  228. 2340 LPRINT "        ";T1$;TAB(21);V1$
  229. 2350 LPRINT CHR$(18);"     ";Q$
  230. 2360 LPRINT "     ";P$(M)
  231. 2370 M = M+1
  232. 2380 LPRINT CHR$(15);"         ";L2$;TAB(21);CT;TAB(33);CINT(DM(L));TAB(46);TM
  233. 2390 LPRINT "        ";T2$;TAB(21);V2$;TAB(32);CINT(DT);TAB(45);A$+":"+B$
  234. 2400 LPRINT CHR$(18);"     ";Q$
  235. 2410 B$ = STR$(CINT(60*((DT/GS)-FIX(DT/GS))))
  236. 2415 IF N<=8 THEN GOTO 2430
  237. 2420 IF ((CINT(L/7))-(L/7)) = 0 THEN LPRINT CHR$(12)
  238. 2430 IF G=1 THEN GOTO 2460
  239. 2440 IF LA = 1 THEN GOTO 2460
  240. 2450 NEXT L
  241. 2460 PRINT:PRINT "      1. Add another leg    2. Look at list     3.  Done!"
  242. 2470 R = VAL(INPUT$(1))
  243. 2473 ON R GOTO 2480,2475, 2540
  244. 2475 RL = 1: GOTO 750
  245. 2476 CLS:GOTO 2460
  246. 2480 N=N+1: LA = 1
  247. 2490 L=N-1
  248. 2500 PRINT:INPUT "      Enter additional waypoint";P$(N)
  249. 2510 IF LEN(P$(N))>8 THEN P$(N) = LEFT$(P$(N),8)
  250. 2520 GOTO 1860
  251. 2530 CLOSE #1
  252. 2540 LPRINT TAB(5);"Estimated Ground Speed =";GS
  253. 2542 CLS
  254. 2545 LPRINT CHR$(12)
  255. 2547 CLS
  256. 2550 GOTO 220
  257. 3000 REM ***************  Intermediate Points **********************
  258. 3010 LTO = L1
  259. 3020 LOO = T1
  260. 3030 LTD = L2
  261. 3040 LOD = T2
  262. 3050 REM ************** VERTEX   ***************************
  263. 3060 X = SIN(C)*COS(LTO)
  264. 3070 GOSUB 5390
  265. 3080 LTV = Y
  266. 3090 X= TAN(C)*SIN(LTO)
  267. 3100 Y = ATN(1/X) 
  268. 3110 LVO = Y
  269. 3120 LOV = LVO-LOO
  270. 3130 REM ************ COURSE SEGMENT *****************
  271. 3140 FOR N = 1 TO FIX(D/LD)
  272. 3150 CLS
  273. 3160 X =  (COS(C))*(SIN(LD*N))*(COS(LTO))+(SIN(LTO))*(COS(LD*N))
  274. 3170 GOSUB 5430
  275. 3180 LTX = Y
  276. 3190 REM K********* COMPUTE LEG COURSE  ************************
  277. 3200 IF N = 1 THEN LA = L2
  278. 3210 X = ((SIN(LTX))-(SIN(LA))*(COS(LD)))/(SIN(LD)*COS(LA))
  279. 3220 GOSUB 5390
  280. 3230 CL = Y
  281. 3240 X = ((SIN(L2))-(SIN(LTX))*(COS(D-N*LD)))/SIN(D-N*LD)*COS(LTX)
  282. 3250 GOSUB 5390
  283. 3260 CX = Y
  284. 3270 LA = LTX
  285. 3280 REM *************** COMPUTE LONGITUDE ************************
  286. 3290 X = TAN(LTX)/TAN(LTV)
  287. 3300 GOSUB 5390
  288. 3310 LVX = Y
  289. 3320 IF CX>3.14159 THEN GOTO 3350
  290. 3330 IF CX<1.57079 THEN LOX = LVX-LOV ELSE LOX = -LVX-LOV
  291. 3340 GOTO 3380
  292. 3350 IF CX<4.71238 THEN LOX=3.14159-(LVX+LOV) ELSE LOX =(LVX-LOV)-3.14159
  293. 3360 IF LOX<-3.14159 THEN LOX = 6.28318 + LOX
  294. 3370 IF LOX> 3.14159 THEN LOX = LOX - 6.28318
  295. 3380 REM *********** CONVERT VALUES ************************ 
  296. 3390 T = CL
  297. 3400 GOSUB 5460
  298. 3410 CL = T
  299. 3420 Z = LTX
  300. 3430 GOSUB 5230
  301. 3440 L5$ = M$
  302. 3450 Z = LOX
  303. 3460 GOSUB 5230
  304. 3470 L6$ = M$
  305. 3480 REM *************** OUTPUT FORMAT  *****************************
  306. 3490 IF N>1 GOTO 3570
  307. 3500 LPRINT CHR$(27);"N";CHR$(1);CHR$(27);"Q";CHR$(50)
  308. 3510 LPRINT CHR$(14)
  309. 3520 X$ = STRING$(50,42):LPRINT X$
  310. 3530 LPRINT "FROM:";LEFT$(W1$,8);TAB(17);"Lat:";L1$;TAB(36);"Long:";T1$
  311. 3540 LPRINT "TO:  ";LEFT$(W2$,8);TAB(17);"Lat:";L2$;TAB(36);"Long:";T2$
  312. 3550 LPRINT "Total Distance: ";FIX(D*3437.75);"miles"; TAB(30);"Each Leg:";FIX(LD*3437.75);" miles"
  313. 3560 LPRINT X$
  314. 3570 IF LL = 1 GOTO 3610
  315. 3580 IF N = 1 THEN CX = CT ELSE CX = CINT(CL*57.2958)
  316. 3590 LPRINT "Point #";N;TAB(17);"Lat:";L5$;TAB(36);"Long:";L6$
  317. 3600 GOTO 3630
  318. 3610 LPRINT "Point #";N;TAB(17);"Lat:";L2$;TAB(36);"Long:";T2$
  319. 3620 REM
  320. 3630 IF IC <> 1 THEN GOTO  3660
  321. 3640 LPRINT "True Course:";CT;TAB(22);"Dist to Intercept:";FIX(D*3437.75);"miles "
  322. 3650 GOTO 3670
  323. 3660 LPRINT "True Course: ";CX;TAB(30);"Leg Dist: ";FIX(LD*3437.75);"miles "
  324. 3670 REM
  325. 3680 LPRINT X$
  326. 3690 IF LL = 1 GOTO 3750
  327. 3700 IF IC = 1 THEN GOTO 3750
  328. 3710 NEXT N
  329. 3720 LL = 1
  330. 3730 LD = D -((N-1)*LD)
  331. 3740 GOTO 3360
  332. 3750 GOSUB 190
  333. 3760 PRINT TAB(10); " Compute intercept 1.Lattitude  2.Longitude  3. End"
  334. 3770 L = VAL(INPUT$(1))
  335. 3780 ON L GOTO 3790, 4060, 4220
  336. 3790 REM *************** COMPUTE INTERCEPT - LONGITUDE *******************
  337. 3800 CLS
  338. 3810 IC = 1
  339. 3820 PRINT TAB(10); " Intercept at what Lattitude "
  340. 3830 PRINT SPC(10): INPUT "( Type in format 000-00.0 )";LTX$
  341. 3840 Z$ = LTX$ : GOSUB 5170
  342. 3850 LTX = W
  343. 3860 X = TAN(LTX)/TAN(LTV)
  344. 3870 GOSUB 5390
  345. 3880 LVX = Y
  346. 3890 IF C>3.14159 THEN GOTO 3920
  347. 3900 IF C<1.57079 THEN LOX = LVX-LOV ELSE LOX = -LVX-LOV
  348. 3910 GOTO 3950
  349. 3920 IF C<4.71238 THEN LOX=3.14159-(LVX+LOV) ELSE LOX =(LVX-LOV)-3.14159
  350. 3930 IF LOX<-3.14159 THEN LOX = 6.28318 + LOX
  351. 3940 IF LOX> 3.14159 THEN LOX = LOX - 6.28318
  352. 3950 X = SIN(L1)*SIN(LTX) + COS(L1)*COS(LTX)*(COS(LOX - T1))
  353. 3960 GOSUB 5390
  354. 3970 D = Y
  355. 3980 Z = LTX
  356. 3990 GOSUB 5230
  357. 4000 L5$ = M$
  358. 4010 Z = LOX
  359. 4020 GOSUB 5230
  360. 4030 L6$ = M$
  361. 4040 N = N+1: LL = 0
  362. 4050 GOTO 3480
  363. 4060 REM ************ COMPUTE INTERCEPT - LAT. **********************
  364. 4070 IC = 1
  365. 4080 CLS
  366. 4090 PRINT TAB(10); "Intercept at what  longitude?"
  367. 4100 PRINT SPC(10): INPUT "(Type in format 0000-00.0 )";LOX$
  368. 4110 Z$ = LOX$
  369. 4120 GOSUB 5200
  370. 4130 LOX = W
  371. 4140 IF C>3.14159 THEN GOTO 4170
  372. 4150 IF C<1.57079 THEN LVX = LOX + LOV ELSE  = LOX-LOV
  373. 4160 GOTO 4180
  374. 4170 IF C<4.71238 THEN LVX = 3.14159-(LOX + LOV) ELSE LVX = LOX-LOV-3.14159
  375. 4180 X = COS(LVX)*TAN(LTV)
  376. 4190 Y = ATN(X)
  377. 4200 LTX = Y
  378. 4210 GOTO 3950
  379. 4220 LPRINT CHR$(12)
  380. 4230 K = 0: IC = O: LL = 0: GOTO 220
  381. 5000 REM **************SUBROUTINES************************
  382. 5010 REM
  383. 5020 REM ****    Find Waypoint  *********
  384. 5030 P = 1
  385. 5040 REM
  386. 5050 G = LEN(P$(T))
  387. 5060 IF FR = 1 THEN X$ = MID$(W$(P),10,G):GOTO 5080
  388. 5070 X$ = LEFT$(W$(P),G)
  389. 5080 IF X$ = P$(T) THEN RETURN
  390. 5090 IF P>NF THEN GOTO 5120
  391. 5100 P = P+1
  392. 5110 GOTO 5040
  393. 5120 PRINT:PRINT "      No such waypoint as  ";P$(T)
  394. 5121 PRINT:PRINT "      1. Look at waypoint list   2. Re-enter waypoint "
  395. 5122 IF VAL(INPUT$(1)) = 1 THEN GOTO 750
  396. 5130 PRINT:INPUT "      Type in correct waypoint  ";P$(T)
  397. 5140 IF LEN(P$(T))>8 THEN P$(T) = LEFT$(P$(T),8)
  398. 5150 GOTO 5030
  399. 5160 RETURN
  400. 5170 REM ******* Convert Deg-Rad (lat.) ****************
  401. 5180 W=(VAL(LEFT$(Z$,3))+.01667*(VAL(RIGHT$(Z$,4))))/57.2958
  402. 5190 RETURN
  403. 5200 REM ******* Convert Deg-Rad (long) ****************
  404. 5210 W=(VAL(LEFT$(Z$,4))+.01667*(VAL(RIGHT$(Z$,4))))/57.2958
  405. 5220 RETURN
  406. 5230 REM ******** Convert Radians to Degrees  **************
  407. 5240 M1 = FIX(57.2958*Z)
  408. 5250 M2 = (FIX((57.2996*Z - M1)*600))*.1
  409. 5260 M2$ = STR$(M2)
  410. 5270 IF LEFT$(M2$,1) = " " THEN M2$ = RIGHT$(M2$,(LEN(M2$)-1))
  411. 5280 IF M2<1 THEN M2$ = "00" + M2$
  412. 5290 IF M2>1 THEN IF M2<10 THEN M2$ = "0" + M2$
  413. 5300 IF LEN(M2$)<4 THEN M2$ = M2$ + "0": GOTO 5300
  414. 5310 IF MID$(M2$,3,1) = "0" THEN M2$ = LEFT$(M2$,2) + "." + MID$(M2$,3,1)
  415. 5320 M1$ = STR$(M1)
  416. 5330 IF Z = LTX GOTO 5360
  417. 5340 IF LEN(M1$)<4 THEN M1$ = "0" + M1$: GOTO 5340
  418. 5350 GOTO 5370
  419. 5360 IF LEN(M1$)<3 THEN M1$ = "0" + M1$: GOTO 5360
  420. 5370 M$ = M1$ + "-" + M2$
  421. 5380 RETURN
  422. 5390 REM ********         Arc cos             *******
  423. 5400 IF ABS(X)>1 THEN X = 1
  424. 5410 Y = -ATN(X/SQR(-X*X+1))+1.5708
  425. 5420 RETURN
  426. 5430 REM *******          Arc Sin            **********
  427. 5440 Y = ATN(X/SQR(-X*X+1))
  428. 5450 RETURN
  429. 5460 REM ********     Course Correction       *******
  430. 5470 LOO = T1
  431. 5480 LOD = T2
  432. 5490 IF LOD>LOO THEN T=6.28318-T ELSE T=T
  433. 5500 IF LOD>0 THEN IF LOO>0 THEN GOTO 5530
  434. 5510 IF LOD<0 THEN IF LOO<0 THEN GOTO 5530
  435. 5520 T=6.28318-T
  436. 5530 RETURN
  437. 5540 REM
  438. 5550 REM*******  PLAN FORMAT   *************
  439. 5560 Q$ = STRING$(41,45):LPRINT "     ";Q$
  440. 5570 LPRINT CHR$(27);"E";"     POINT";TAB(15);"COURSE";TAB(22);"DIST.";TAB(28);"EST.TIME";TAB(37);"ACTUAL TIME";CHR$(27);"F";CHR$(15)
  441. 5580 LPRINT "        Lattitude";TAB(22);"True";TAB(34);"Leg Dist.";TAB(44);"Leg";TAB(60);"Leg"
  442. 5590 LPRINT "        Longitude";TAB(22);"Variation";TAB(34);"Total";TAB(44);"Total";TAB(60);"Total";CHR$(18)
  443. 5600 LPRINT "     "; Q$ 
  444. 5610 RETURN
  445. 5620 REM ********************  END PROGRAM ***********************
  446. 5630 PRINT TAB(10);"SAVE CHANGES IN THE FILE? (yes/no)
  447. 5640 IF INPUT$(1) = "Y" THEN GOTO 5670
  448. 5650 PRINT "END OF PROGRAM"
  449. 5660 END
  450. 5670 REM ************** SAVE CHANGES **************
  451. 5680 CLOSE #1
  452. 5690 OPEN "O", #1, FIL$
  453. 5700 P = 1
  454. 5710 IF LEFT$(W$(P),3)<"AAA" THEN GOTO 5750
  455. 5720 WRITE #1, W$(P)
  456. 5730 P = P+1
  457. 5740 GOTO 5710
  458. 5750 CLOSE #1
  459. 5760 GOTO 5650
  460.